﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ONG.Componentes.AccesoDatos.Model.TallerArtesanal;
using ONG.Componentes.AccesoDatos.Logic.Facade;

namespace ONG.Componentes.LogicaNegocio
{
    public static class LNOrdenPedido
    {
        public static List<TA_Producto> ListadoProducto()
        {
            return OrdenPedido.ListadoProducto();
        }

        public static List<TA_OrdenPedido> ListadoOrdenPedido(int? idSupervisor)
        {
            return OrdenPedido.ListadoOrdenPedido(null,null,null);
        }

        public static List<TA_OrdenPedido> ListadoOrdenPedido(int? idSupervisor, DateTime? FechaEntregaInicio, DateTime? FechaEntregaFin, string CodOrdenPedido = null, string Asignado = null)
        {
            return OrdenPedido.ListadoOrdenPedido(idSupervisor,FechaEntregaInicio, FechaEntregaFin,  CodOrdenPedido, Asignado);
        }

        public static List<TA_DetalleOrdenPedido> ListadoDetalleOrdenPedido(int? numOrden)
        {
            return OrdenPedido.ListadoDetalleOrdenPedido(numOrden);
        }

        public static List<TA_Comprador> ListadoComprador()
        {
            return OrdenPedido.ListadoComprador();
        }
        public static List<TA_Taller> ListadoTallerDisponible(DateTime? fechaInicio, DateTime? fechaFin)
        {
            return OrdenPedido.ListadoTallerDisponible(fechaInicio, fechaFin);
        }


        public static List<TA_ProgramacionTaller> ListadoProgramacion(int? numOrden)
        {
            return OrdenPedido.ListadoProgramacion(numOrden);
        }

        public static TA_ProgramacionTaller ObtenerProgramacion(int? numProgramacionTaller)
        {
            return OrdenPedido.ObtenerProgramacionTaller(numProgramacionTaller);
        }

        public static TA_ProgramacionTaller ObtenerProgramacionTaller(int numProgramacion, int idTaller)
        {
            return OrdenPedido.ObtenerProgramacionTaller(numProgramacion, idTaller);
        }

        public static TA_ProgramacionTaller ActualizarProgramacionTaller(TA_ProgramacionTaller programacionTaller)
        {
            return OrdenPedido.ActualizarProgramacionTaller(programacionTaller);
        }

        public static TA_Entrega GrabarRegistrarAvanceProduccion(int idEntrega, int cantidadEjecutada)
        {
            return OrdenPedido.GrabarRegistrarAvanceProduccion(idEntrega, cantidadEjecutada);
        }

        public static List<TA_ProgramacionTaller> ListadoProgramacionTaller(int? idProgramacion)
        {
            return OrdenPedido.ListadoProgramacionTaller(idProgramacion);
        }

        public static List<TA_ProgramacionTaller> ListadoProgramacionTallerByIdDetallePedido(int idDetallePedido)
        {
            return OrdenPedido.ListadoProgramacionTallerByIdDetallePedido(idDetallePedido);
        }
        public static bool EliminarProgramacionTaller(int idDetallePedid, int idProgramacionTaller)
        {
            return OrdenPedido.EliminarProgramacionTaller(idDetallePedid, idProgramacionTaller);
        }
        

        public static List<TA_ProgramacionTaller> ListadoProgramacionTallerByIdOrdenPedido(int idOrdenPedido)
        {
            return OrdenPedido.ListadoProgramacionTallerByIdOrdenPedido(idOrdenPedido);
        }

        public static List<TA_Entrega> ListadoEntregas(int idProgramacion, int idTaller)
        {
            return OrdenPedido.ListadoEntregas(idProgramacion, idTaller);
        }

        public static TA_ProgramacionTaller GrabarProgramacionTaller(int idDetalleOP, int idProgramacion, int idTaller, int cantAsignadas)
        {
            var progTall = new TA_ProgramacionTaller
                {
                    IdDetallePedido = idDetalleOP,
                    IdProgramacionTaller = idProgramacion,
                    IdTaller = idTaller,
                    CantidadAsignadas = cantAsignadas
                };

            return OrdenPedido.GrabarProgramacionTaller(progTall);
        }

        public static List<TA_Visita> ListadoAgendaVisitas(DateTime? fechaEntrega)
        {
            return OrdenPedido.ListadoAgendaVisitas(fechaEntrega);
        }
        
        public static List<TA_SolicitudCotizacion> ListadoCotizacion(string estadoSolictud)
        {
            return OrdenPedido.ListadoCotizacion(estadoSolictud);
        }

        public static List<TA_DetalleSolicitud> ListadoDetalleCotizacionProductos(int idSolicitud)
        {
            return OrdenPedido.ListadoDetalleCotizacionProductos(idSolicitud);
        }
         

        

        public static TA_SolicitudCotizacion AprobarSolicitudCotizacion(int idSolicitud, DateTime fechaEntrega)
        {
            return OrdenPedido.AprobarSolicitudCotizacion(idSolicitud, fechaEntrega);
        }
        public static TA_SolicitudCotizacion RechazarSolicitudCotizacion(int idSolicitud)
        {
            return OrdenPedido.RechazarSolicitudCotizacion(idSolicitud);
        }
    }
}
